﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL;
public partial class master_Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string idActivo = Request.QueryString["ActivoID"];
            if (idActivo.Equals("0"))
            {
                iActivoFijo_id.Value = "0";
                ModPersona mod = new ModPersona();
                List<Tbl_Personas> lista = mod.listAllPersona();
                List<FormatPersona> listFormatted = getFormattedPersonas(lista);
                Encargado.DataSource = listFormatted;
                Encargado.DataValueField = "PID";
                Encargado.DataTextField = "PNombre";
                Encargado.DataBind();
                ModContabilidad contabilidad = new ModContabilidad();
                List<Tbl_TiposActivosFijos> tipos = contabilidad.getAllTiposActivo();
                Tbl_TiposActivosFijos tipo = new Tbl_TiposActivosFijos();
                iTipoActivo_id.DataSource = tipos;
                iTipoActivo_id.DataValueField = "iTipoActivo_id";
                iTipoActivo_id.DataTextField = "sCodigoActivoFijo";
                iTipoActivo_id.DataBind();
                string s = iTipoActivo_id.SelectedValue;
                tipoActivo_desc.Text = getTipoDesc(Convert.ToInt32(s));
            }
            else
            {
                ModPersona mod = new ModPersona();
                List<Tbl_Personas> lista = mod.listAllPersona();
                List<FormatPersona> listFormatted = getFormattedPersonas(lista);
                Encargado.DataSource = listFormatted;
                Encargado.DataValueField = "PID";
                Encargado.DataTextField = "PNombre";
                Encargado.DataBind();
                ModContabilidad contabilidad = new ModContabilidad();
                List<Tbl_TiposActivosFijos> tipos = contabilidad.getAllTiposActivo();
                Tbl_TiposActivosFijos tipo = new Tbl_TiposActivosFijos();
                iTipoActivo_id.DataSource = tipos;
                iTipoActivo_id.DataValueField = "iTipoActivo_id";
                iTipoActivo_id.DataTextField = "sCodigoActivoFijo";
                iTipoActivo_id.DataBind();

                int activoid = Convert.ToInt32(idActivo);
                Tbl_ActivoFijos activo = contabilidad.getActivoporID(activoid);
                if (activo != null)
                {
                    iActivoFijo_id.Value = idActivo;
                    sCodigoActivoFijo.Value = activo.sCodigoActivoFijo;
                    iValorActualizado.Value = activo.iValorActualizado + "";
                    iValorNeto.Value = activo.iValorNeto + "";
                    iUltimaDepreciacion.Value = activo.iUltimaDepreciacion + "";
                    iDepreciacionAcumulada.Value = activo.iDepreciacionAcumulada + "";
                    Tbl_Usuarios user = (Tbl_Usuarios)Session["CurrentUser"];
                    iCreadoPor.Value = activo.iCreadoPor + "";
                    iModificadoPor.Value = user.iUsuario_id + "";
                    dtFecha_UltimaDepreciacion.Value = activo.dtFecha_UltimaDepreciacion.ToString();
                    iEstado_fl.Value = Convert.ToString(activo.iEstado_fl);
                    iEstadoActivo_fl.Value = Convert.ToString(activo.iEstadoActivo_fl);
                    sDescripcionActivo.Text = activo.sDescripcionActivo;
                    sDescripcionActivo.Enabled = false;
                    sDescripcionActivo.ReadOnly = true;
                    iValorOriginalCompra.Text = activo.iValorOriginalCompra + "";
                    iValorOriginalCompra.ReadOnly = true;
                    Encargado.SelectedValue = activo.Encargado + "";
                    iTipoActivo_id.SelectedValue = activo.iTipoActivo_id + "";
                    tipoActivo_desc.Text = getTipoDesc(activo.iTipoActivo_id);
                    iTipoActivo_id.Enabled = false;
                    sLocalizacionActual.Text = activo.sLocalizacionActual;
                    dtFecha_ingreso.Text = activo.dtFecha_ingreso.ToString("dd/MM/yyyy");
                    dtFecha_ingreso.Enabled = false;
                    dtFecha_ingreso.ReadOnly = true;
                    iCantidad.Visible = false;
                    spnCant.Visible = false;
                }
            }
        }
    }
    protected void btnSave_Click(object sender, EventArgs e)
    {
        Tbl_Usuarios usuarioActual = (Tbl_Usuarios)Session["CurrentUser"];
        string idActivo = iActivoFijo_id.Value;
        if (usuarioActual != null && idActivo.Equals("0"))
        {
            Tbl_ActivoFijos activoFijo = new Tbl_ActivoFijos();

            activoFijo.sDescripcionActivo = sDescripcionActivo.Text;
            activoFijo.iValorOriginalCompra = Convert.ToDecimal(iValorOriginalCompra.Text);
            activoFijo.Encargado = Convert.ToInt32(Encargado.SelectedValue);
            activoFijo.iTipoActivo_id = Convert.ToInt32(iTipoActivo_id.SelectedValue);
            activoFijo.sLocalizacionActual = sLocalizacionActual.Text;
            activoFijo.dtFecha_ingreso = Convert.ToDateTime(dtFecha_ingreso.Text);
            activoFijo.dtFecha_UltimaDepreciacion = activoFijo.dtFecha_ingreso;
            activoFijo.iCreadoPor = usuarioActual.iUsuario_id;
            ModContabilidad cont = new ModContabilidad();
            cont.insertActivoFijo(activoFijo, Convert.ToInt32(iCantidad.Text));
        }
        else if (usuarioActual != null && !idActivo.Equals("0"))
        {
            string strActivo = iActivoFijo_id.Value;
            int activoId = Convert.ToInt32(strActivo);
            ModContabilidad cont = new ModContabilidad();
            Tbl_ActivoFijos activo = cont.getActivoporID(activoId);
            if (activo != null)
            {
                int encargado = Convert.ToInt32(Encargado.SelectedValue);
                int autorizado = usuarioActual.iUsuario_id;
                string slocalizacionNueva = sLocalizacionActual.Text;
                cont.moverActivo(encargado, usuarioActual.iPersona_id, slocalizacionNueva, usuarioActual.iUsuario_id, activo);
            }
        }
        Response.Redirect("ActivoFijoList.aspx");
    }
    protected void btnCancel_Click(object sender, EventArgs e)
    {
        Response.Redirect("ActivoFijoList.aspx");
    }

    public static List<FormatPersona> getFormattedPersonas(List<Tbl_Personas> personas)
    {
        List<FormatPersona> formatted = new List<FormatPersona>();
        foreach (Tbl_Personas person in personas)
        {
            formatted.Add(new FormatPersona(person.iPersona_id, person.sNombre + " " + person.sApellido_paterno + " " + person.sApellido_Materno));
        }
        return formatted;
    }
    public class FormatPersona
    {
        private int pID;

        public int PID
        {
            get { return pID; }
            set { pID = value; }
        }

        private string pNombre;

        public string PNombre
        {
            get { return pNombre; }
            set { pNombre = value; }
        }

        public FormatPersona(int id, string nombre)
        {
            this.pID = id;
            this.pNombre = nombre;
        }
    }


    protected void iTipoActivo_id_SelectedIndexChanged(object sender, EventArgs e)
    {
        string s = iTipoActivo_id.SelectedValue;
        tipoActivo_desc.Text = getTipoDesc(Convert.ToInt32(s));
    }

    public string getTipoDesc(int iTipo)
    {
        ModContabilidad mod = new ModContabilidad();
        Tbl_TiposActivosFijos tipo = mod.getTipo(iTipo);
        return (tipo != null) ? "'"+tipo.sTipoActivo+"'" : "null";
    }
}